home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-03-19 | 62.1 KB | 1,326 lines | [TEXT/MPS ] |
- #/******************* This is a full line in MPW printing on an 8.5 x 11, in Courier 9 ******************/
- #########################################################################
- #########################################################################
- ## Copyright © Apple Computer, Inc. 1992-1997
- ## All rights reserved
- #########################################################################
- #########################################################################
- #
- # Library: LaunchQuit Script.vu
- #
- # Version: 2.1.4
- # Description:
- # This script is a shell for the LaunchQuit Engine, a Virtual User task
- # named CheckLaunchQuits() that executes launchquit test defs. The launchquit
- # engine is in another library named 'LaunchQuits.lib. The parameters
- # are used to determine which tests to run and how many times to repeat each
- # one, variations in their order or manner of execution, how much detail to
- # report in the VU Notebook, how to set up the target, and other details of a
- # fully automated runtime environment.
- #
- # The main goals are:
- # • Be the front end for the engine; this script has a crude user interface,
- # basically the VU script parameter window with creative parameter names and
- # default values.
- # • Provide a rich set of runtime controls and at the same time keep the
- # engine simple according to the Clouseau test def based model; this
- # script is distinct from the engine and calls it as a subroutine.
- # • Allow execution of any test def(s) directly, without having to wait
- # for them to occur in their natural order in a stored list; a separate
- # library contains the test defs and tasks required to look up a specific
- # test def based on a wide range of criteria. See the libraries named
- # PreCompile LQs.vu and LaunchQuit Test Defs.vulib, for full details. Of course,
- # the engine must support these new retrieval methods, but it does this by
- # using a task reference variable and standardizing the new methods.
- # • Allow blocking the execution execution of any test def(s) for any reason;
- # the LaunchQuit engine has a parameter to specify the list of test defs
- # to be skipped, by partial or full name.
- # • Provide access to the TargetControl configuration tasks, so any subset
- # of launchquits can execute multiple times under different settings without
- # human intervention required; a separate set of libraries in the Clouseau
- # folder contains tasks to set the most commonly used control panels.
- # • Communicate with the user before the testing begins if the target can not
- # be prepared; the script attempts to notify as soon as possible if testing
- # is blocked, to require only a small amount of startup babysitting.
- # • Facilitate easy reproducibility; this happens naturally because of the
- # features listed above, but the script also allows specification of the
- # random seed for reproducing the pseudo-random choices.
- # Contains:
- # script LaunchQuit()
- # PrintLQInstructions()
- #
- # History:
- # Date: By: Changes:
- # 12/20/92 SBR Created
- # 03/22/94 SBR Added Print_Instructions; changed Repeat_? script
- # parameters to Iterate_?; added Use_MacsBug_Log_Macro
- # parameter; cleaned up formatting.
- # 06/17/94 Gary Kratzer Added PPC launch parameter
- # 09/07/94 SBR Added checkExternalToolVersions();
- # added script parameters: report_to_phoenix,
- # printer_selection
- # 07/19/95 SBR Moved checkExternalToolVersions() and
- # TurnOffShutdownWarning() to target_control.lib;
- # removed Custom_Testing
- # 08/03/95 SBR Radar 1274932: print all parameters for ISO compliance
- # Radar 1274933: better defaults if Use_Development_TDs := true
- # Radar 1274934: added "PDD Maker GX" printer selection
- # Radar 1274935: removed Custom_Testing parameter
- # Radar 1274936: removed Use_Arbitrator_If_Available parameter
- # 09/27/96 BRL Added SPEC Exception handling
- # 01/10/97 SBR Updated PrintLQInstructions() for LQ Engine 2.1d6
- # 01/30/97 SBR Deleted older exception code and comments.
- # 01/31/97 SBR Changed AIQ LaunchQuits.vuLib to LaunchQuit Test Defs.vuLib.
- # 01/31/97 SBR Retired VUAidFKEY.
- # 04/10/97 SBR Changed name to LaunchQuit Script.vu (for TTS compatibility).
- #########################################################################
- #########################################################################
- Libraries
- # Clouseau libraries
- "Additions.lib",
- "Clouseau.lib",
- "MemoryCP.lib",
- "Message.lib",
- "Report.lib",
- "TargetControl.lib",
- "VUAid.lib",
-
- # LaunchQuit libraries
- "Dev LaunchQuits",
- "LaunchQuit Test Defs.vuLib",
- "LaunchQuits.lib",
-
- # External Tool libraries
- "FileTool.vuLib",
- #"OnTarget.lib"
-
- # SPEC libraries
- "ExceptionHandling.lib",
- "Globals.lib";
-
- #########################################################################
- # script LaunchQuit()
- #∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞
- # Description: Provides a front end for the LaunchQuit Engine as described in the
- # header for this library file.
- # Parameters: The parameters are so numerous they are divided into several sections
- # for readability. Each section contains parameters that roughly partain
- # to the same kind of setting, such as: which test defs to execute,
- # how to configure the target, and various switches to modify the
- # behavior of the engine.
- #
- # Print_Instructions
- # Possible values are:
- # true: Print the instructions for how to use the script parameters,
- # then exit the script.
- # false: Execute the script normally. Do not print instructions.
- #
- # Run_Title
- # This is just a string the engine puts into the notebook as an
- # identifier for someone reading the log later. It can be anything
- # you want. For example, you might use
- # 'Quadra 840AV GMc4 Acceptance Launchquits with EtherNet'.
- #
- # Report_To_Phoenix
- # This is a Boolean to switch on and off TCS reporting to Phoenix from
- # the LaunchQuit Engine. For a description of TCS reporting, refer to
- # the HitchHiker's Guide to SPEC S&L.
- # true: report test def results to a Phoenix database
- # through the Results Express external tool
- # false: do not report test def results externally
- #
- # TEST DEF SELECTION
- # This section allows you to specify which test defs you want to execute and how to
- # execute them. It partains to the method of launching, a switch for randomness, and how
- # to resume from stopping in the middle of the script.
- #
- # Test_Type
- # The type of test you want to run, similar to the tier for
- # application compatibility testing. Test defs can be divided into
- # types 1, 2, and 3, with type 1 being the kind you want to run every
- # time, and 3 the kind you want to run least often. Currently, all
- # Launchquits are type 1.
- #
- # Skip_These_Tests
- # A list of test defs never to use under any circumstances. Include
- # the string or regular expression name(s) of the application(s) you
- # want to skip for this run of the engine. They will be logged as
- # Incomplete tests in the Notebook. The name can be partial, but only
- # the first occurrance counts. The items are removed from the list as
- # they are skipped. If the name does not end in '@' then it is assumed
- # to be a partial name and a trailing '≈' is added. For example:
- # { /≈PageMaker≈/, 'Adobe Premiere' } will skip these two and run all
- # others. This parameter overides all others.
- #
- # Run_Only_These_Tests
- # A list of test defs to test, if you want to use a subset. Include
- # the string or regular expression name(s) of the application(s) you
- # want to test during this run of the engine. If there are any items in
- # this list the engine will use ONLY the listed test defs. The other
- # applications are ignored and not logged. This is most useful for
- # iterating a specific test def for regression. The name can be
- # partial, but only the first occurrance counts. The items are
- # removed from the list as they are used. If the name does not end in
- # '@' then it is assumed to be a partial name and a trailing '≈' is
- # added. For example: { /≈PageMaker≈/, 'Adobe Premiere' } will run
- # ONLY these two.
- #
- # NOTE: If the same name is in Skip_These_Tests and Run_Only_These_Tests,
- # then the request to skip takes priority over the request to run.
- #
- # Iterate_Each_Test
- # An integer specifying how many times to iterate each test def
- # which is not skipped. This parameter is useful for stress testing.
- #
- # Random_Order_Once_Each
- # Changes the order of execution. The engine will execute all test
- # defs in pseudo-random order, but none will execute more than once,
- # unless Iterate_Each_Test is greater than one. Possible values are:
- # true: Test defs execute in pseudo-random order.
- # false: Test defs execute in natural order, which is alphabetic.
- #
- # Random_Seed
- # Used when trying to reproduce pseudo-random tests. Before using VU's
- # random number generator, the script prints the random seed in the
- # Notebook. If you want to reproduce a test run then copy the seed from
- # the Notebook and paste it in this parameter. Possible values are:
- # zero: Allow VU create a new random seed.
- # integer: Set the random seed to the specified value.
- #
- # Launch_Method
- # This allows you to specify how you want to launch the application.
- # The most reliable method is 'Finder'. The fastest is 'auto'.
- # The possible values are:
- # 'AgentVUFG': Launch by creator into the foreground using Agent VU.
- # 'AgentVUBG': Launch by creator into the background using Agent VU.
- # Since most applications do not launch properly into
- # the background, this method is not allowed unless
- # launchParams contains 'bgLaunchOK'.
- # CAUTION: Agent VU 2.0.x will not launch an app if the
- # preferred size is not available. Since Agent VU uses
- # the creator, that should be unique across all
- # mounted target volumes.
- # 'Find File': Locate using FInd File DA. Double-click while
- # pressing the option key to close the DA.
- # This method is slow but sure if the names are unique.
- # 'Finder': Twitch to Finder and Find appName. Type command-O
- # while pressing the option key to close the window.
- # This method is not reliable with newer Finders.
- # 'auto': Use 'agentVUFG', but if this is fails use 'Finder'.
- #
- # Special_Parameters
- # Launch only the applications with the specified launch parameters.
- # This is mainly used to test under known failure conditions.
- # Possible values are:
- # 'FPU': The application expects the target to have an FPU.
- # '32Bit': The application crashes under 32-bit addressing.
- # '68040 Caches': The application crashes if 68040 Caches are on.
- # 'QuickTime': The application expects the target to have QuickTime.
- # 'noCreatorLaunch': There are multiple applications across the
- # target volumes which have this creator.
- # 'bgLaunchOK': The application can launch into the background.
- # 'SNConflict': The application uses network-based serial number
- # copy protection.
- # 'PPC': The application only runs on a PowerPC.
- #
- # Resume_Last_Run
- # If for some reason you stop the Launchquit script prematurely,
- # you can resume at any application by putting its name in this
- # parameter. You can use a partial or exact name. The best way is to
- # copy the exact name of the last attempted test def from the
- # Notebook. If you were using the Arbitrator when you stopped, and
- # it is still running when you start, it will automatically provide
- # the last attempted test def as the resume value.
- #
- # Resume_Offset
- # Using this if you want to resume at some test def after the one
- # specified in Resume_Last_Run. Include an integer representing the
- # offset from the original. The engine will find the nth test def that
- # matches Special_Parameters. For example, the last test def executed
- # before you stopped the engine might be 'SimAnt'. Usually, if SimAnt
- # failed, you will want to resume at the next one, so put 'SimAnt'
- # in Resume_Last_Run and 1 into the Resume_Offset. If you want to
- # resume with 'SimAnt', use a zero here. You can not use negative
- # offsets, but the number may be as high as the number of test defs
- # matching Special_Parameters.
- #
- # TARGET SETUP
- # This section allows you to specify how to set up the Memory Control Panel, and how many times
- # you want to run through all the test defs in each configuration. To use this feature, the
- # VUAid 2.0 External Tool must be on the Target.
- #
- # Configurations__0_Is_Custom
- # For each integer in this list, the engine will set up the
- # target according to the values described below, restart the target,
- # then run all test def as specified above. If you want to set up the
- # Memory Control Panel manually for one pass, leave the list empty.
- # All possible values are defined in TargetControl.lib. The most
- # commonly used values are:
- #
- # 0: Use the custom Memory CP parameters as specified below.
- # Otherwise, those parameters are ignored.
- # 1: VM on, 2x physical RAM if possible, 32-bit on.
- # 2: VM off, 32-bit on.
- # 3: VM on, 2x physical RAM if possible, 32-bit off.
- # 4: VM off, 32-bit off.
- # 5: Use random settings for all Memory CP sections.
- #
- # Iterate_Each_Configuration
- # Use this integer to iterate configurations, with a restart in
- # between each one. You can several of the same values in the
- # Configurations__0_Is_Custom parameter also, but this allows for
- # larger numbers of repetitions.
- #
- # Disk_Cache
- # Custom value for the Disk Cache section of the Memory Control
- # Panel. Possible values are:
- # 'xK': (x > 0) the value in KB
- # 'random': choose randomly from all possible values
- # 'no change': recover from Use Defaults (not implemented)
- # '': empty string to ignore this section
- #
- # Modern_Memory_Manager
- # Custom value for the Modern Memory Manager section of the
- # Memory Control Panel. Possible values are:
- # 'on': click On if not already selected
- # 'off': click Off if not already selected
- # 'random': click On or Off randomly
- # 'no change': recover from Use Defaults (not implemented)
- # '': empty string to ignore this section
- #
- # _32Bit_Addressing
- # Custom value for the 32-Bit Addressing section of the
- # Memory Control Panel. Possible values are:
- # 'on': click On if not already selected
- # 'off': click Off if not already selected
- # 'random': click On or Off randomly
- # 'no change': recover from Use Defaults (not implemented)
- # '': empty string to ignore this section
- #
- # Virtual_Memory
- # Custom value for the Virtual Memory section of the
- # Memory Control Panel. Possible values are:
- # 'on': click On if not already selected
- # 'xM': (x > 0) click On, set the value to xM
- # 'x%': (0 <= x <= 100) click On, set to x% of maximum
- # 'off': click Off if not already selected
- # 'min': set to minimum (available built-in memory + 1M)
- # 'max': set to maximum (available on disk - 1M)
- # 'auto': turn VM off then on after setting the other
- # sections, and let Memory CP choose the value
- # 'random': choose randomly from minimum to maximum
- # 'no change': recover from Use Defaults (not implemented)
- # '': empty string to ignore this section
- #
- # RAM_Disk
- # Custom value for the RAM Disk section of the Memory Control Panel.
- # The RAM Disk must be empty to change its settings.
- # Possible values are:
- # 'xK': (0 <= x) size in KB (click On or Off as needed)
- # 'x%': (0 <= x <= 100) set to % of slider positions
- # (faster, less accurate)
- # 'x%!': (0 <= x <= 100) set to % of max - min
- # (slower, more accurate)
- # 'off': click Off
- # 'min': set to minimum size
- # 'max': set to maximum size
- # 'random': choose randomly from all slider positions
- # (1/125 chance of turning it off)
- # 'VMOn': set size just high enough to allow use of VM
- # (not implemented)
- # 'no change': recover from Use Defaults (not implemented)
- # '': empty string to ignore this section
- #
- # Use_Defaults
- # Custom value for the Use Defaults section of the Memory Control
- # Panel. Possible values are:
- # 'click': click Use Defaults before setting other sections
- # '': ignore this section
- # Printer_Selections
- # Currently all test defs assume there is a valid type of printer
- # selected. This list contains the default types. A printer selection is
- # a list containing two items:
- # { printerType,{ setupParameters } }
- # The format of these items is defined in the file TargetControl.lib, in the
- # task SelectPrinter().
- #
- # MISCELLANEOUS
- # This section contains miscellaneous script settings which are most useful when developing
- # and debugging test defs. Some of them eliminate much of the time taken to set up the target,
- # and allow you to skip all the fluff and jump directly to the engine itself.
- #
- # Verbosity_Level
- # This is an integer specifying how much diagnostic information
- # you want to print in the Notebook. Possible values are:
- # 0: no output except for Not-Tested-List
- # 1: only Begin/End tests, Errors, Not-Tested-List and summaries
- # 2: run-time output, without specifying multiple verifications
- # 3: run-time output, with multiple verifications
- # 4: scripter's debugging-level output
- # 5: Clouseau-libs level debugging-output
- # This script normally executes at verbosity level 2. The engine
- # will use level 3 for the output of any failed test def, to provide
- # regression information.
- #
- # Use_Development_TDs
- # A Boolean value that is normally false. If it is true, the engine
- # will execute the test defs contained in the Dev Launchquits
- # library, which allows you to create and use new test defs
- # without modifying the production libraries. Values are:
- # true: Use the development test defs in 'Dev Launchquits'
- # false: Use the standard test defs in 'LaunchQuit Test Defs.vulib'
- #
- # Log_Target_Info
- # A Boolean value that determines whether you want the script to
- # print the current target information first, before configuring
- # the target and calling the engine. Possible values are:
- # true: The engine will log the state of the target before
- # as well as after changing the configuration. This is
- # slower but more thorough.
- # false: The engine will log the state of the target only after
- # changing the configuration. This is faster.
- #
- # Skip_Target_Setup
- # A Boolean value that determines whether to configure the target
- # according to the Configurations__0_Is_Custom parameter. Possible
- # values are:
- # true: The script will skip the target setup and go directly
- # to running the test defs. This is desirable if you
- # are developing new test defs. The script prints a
- # list of what was not set up in the Notebook.
- # false: The engine will set up the target according to the
- # parameters above. This is the usual setting, but you
- # can also use it for development if you want to try
- # the new test defs under various configurations.
- #
- # Use_MacsBug_Log_Macro
- # This Boolean parameter determines whether you want to set the
- # MacsBug EveryTime macro. This macro executes automatically
- # whenever the target enters MacsBug. See the MacsBug manual for
- # details. Possible values for this parameter are:
- # true: The script creates a MacsBug EveryTime macro as
- # defined in the MacsBug_Log_Macro parameter below.
- # After every test def and every crash, the engine
- # checks for a MacsBug log, and if found, renames it
- # and moves it to a folder on the target startup disk.
- # If you want to ensure there is no EveryTime macro, set
- # this parameter to true and set the MacsBug_Log_Macro
- # parameter to 'clear'.
- # false: The script will completely ignore the EveryTime macro.
- # If it is defined in the Debugger Prefs file in the
- # target system folder, it will execute from there.
- #
- # MacsBug_Log_Macro
- # If you put a string in this parameter consisting of valid MacsBug
- # commands followed by semi-colons, and the Use_MacsBug_Log_Macro
- # parameter is set to true, the script will set up the EveryTime
- # Macro to create a log, execute the commands you put here, close
- # the log and restart. If you want to define the macro in the
- # Debugger Prefs file, put a false value in Use_MacsBug_Log_Macro.
- # To ensure the EveryTime macro is cleared under all circumstances,
- # put true into Use_MacsBug_Log_Macro and put 'clear' in this
- # parameter. Then crashed targets will sit right where
- # they crashed. This is good for manual debugging. Possible values
- # for this parameter are:
- # theMacro: A string of valid MacsBug commands, each followed
- # by a semi-colon. For example, the string
- # 'ap;how;wh;ip;td;' will put the application name,
- # how it crashed, where it crashed, some disassembly
- # around the crash point, and the registers, into the
- # log. The commands you specify here are wrapped in
- # commands to open a log, close it and restart, so
- # you do not have worry about that if you use this
- # mechanism to make the macro.
- #
- # If you put an empty string here, the engine will
- # still create a log and restart, but it will be an
- # empty file.
- #
- # CAUTION: Keep it short, MacsBug is unforgiving
- # for long macros. Also, beware of commands that
- # produce so many output lines that MacsBug asks for
- # a key press to continue auto-scrolling. Stack
- # crawls based on A7 tend to produce too much.
- # 'clear': This is a special value to clear the EveryTime
- # macro. Even if the macro is defined in the Debugger
- # Prefs file, it is cleared until the next startup.
- #
- # Quit_All_First
- # You may want to run the LaunchQuit engine with an application
- # running in the background, or perhaps several. Normally, the
- # script tries to quit all applications except Finder before
- # calling the engine. This Boolean parameter allows you to skip
- # that process. Possible values are:
- # true: The script will try to quit all applications before
- # starting the engine. This is slower but ensures there
- # are no leftover applications taking up space.
- # false: The script will ignore whatever applications were
- # running at the time it started.
- #
- # CAUTION: These applications will stay in the background
- # for the whole run, but in the current implementation
- # they are not re-launched after a crash.
- #
- # Make_Aliases
- # When the script configures the target with several Control Panels,
- # you can speed up the process by allowing it to create aliases
- # and move them to the Apple Menu Items folder. When the script
- # tries to open a Control Panel it looks first for the alias.
- # Possible values are:
- # true: The script will create an alias for all Control Panels
- # used during the run, and put the alias in the Apple
- # Menu Items folder.
- #
- # CAUTION: In the current implementation the aliases
- # are not removed after the run is complete.
- # false: The script will not create an alias for Control Panels.
- #
- # # #Radar 1274935: removed Custom_Testing parameter
- # # Custom_Testing
- # # (Not implemeted well enough for production use).
- # # This Boolean value specifies if you want to execute the custom
- # # task defined in the LQCustom.lib. You can define this task
- # # any way you want. When the launch sequence is complete for
- # # each application, the engine executes the custom task.
- # # After the custom task returns successfully, the engine attempts
- # # to quit the application normally. Possible values are:
- # # true: The engine will execute the custom task.
- # # false: The script will not execute the custom task.
- # #
- # # #Radar 1274936: removed Use_Arbitrator_If_Available parameter
- # # Use_Arbitrator_If_Available
- # # If the Arbitrator script is running, connect to it and
- # # use it to keep track of which test def is currently
- # # executing, and also to prevent multiple launching of
- # # applications that check for serial number conflicts
- # # over the network. Possible values are:
- # # true: Connect to the Arbitrator if it is running.
- # # false: Do not connect to the Arbitrator.
- # #
- # Returns: Nothing
- # Examples: LaunchQuit(); # too much stuff for a good example
- # Assumptions: 1) MUST USE VU 2.1.1
- # 2) CloseView is removed entirely and never used, otherwise cmd-opt-O
- # and cmd-shift-opt-upArrowKey will not work. These are used to launch
- # applications in the Finder and locate the startup volume, respectively.
- #∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞
- # History:
- # 12/20/92 SBR Created
- # 06/17/94 Gary Kratzer Added PPC launch parameter
- # 08/03/95 SBR Radar 1274932: print all parameters for ISO compliance
- # Radar 1274933: better defaults if Use_Development_TDs := true
- # Radar 1274934: added "PDD Maker GX" printer selection
- # Radar 1274935: removed Custom_Testing parameter
- # Radar 1274936: removed Use_Arbitrator_If_Available parameter
- # 08/27/96 BRL Radar 1379278: removed onTarget calls
- # Radar 1352263: removed fileTool version checks
- # Changed some parameter defaults
- # 09/27/96 BRL Added SPEC Exception handling
- #########################################################################
- script LaunchQuit
- (
- Print_Instructions := false,
- Run_Title := "LaunchQuit Engine 2.1.4 Test Run",
- Report_To_Phoenix := false,
- ________________________ := "_________________________",
- Test_Type := 1,
- Skip_These_Tests := { "testNameHerePartialNameOK" },
- Run_Only_These_Tests := { "testNameHerePartialNameOK" },
- Iterate_Each_Test := 1,
- Random_Order_Once_Each := false,
- Random_Seed := 0,
- Launch_Method := "auto",
- Special_Parameters := { "exactSpellingRequired" },
- Resume_Last_Run := false,
- Resume_Offset := 1,
- _______________________ := "_________________________",
- Configurations__0_Is_Custom := { (*1,2*) }, #see TargetControl.lib for pre-set values
- Iterate_Each_Configuration := 1,
- Disk_Cache := "",
- Modern_Memory_Manager := "",
- _32Bit_Addressing := "",
- Virtual_Memory := "",
- RAM_Disk := "Off",
- Use_Defaults := "click",
- Printer_Selections := {{"LaserWriter 8",{}},{"LaserWriter",{}},{"PDD Maker GX",{}}},
- #Screen_Depth := 8,
- #Gray_Scale := false,
- #_68040_Cache := true,
- ______________________ := "_________________________",
- Verbosity_Level := 2,
- Use_Development_TDs := false,
- Log_Target_Info := true,
- Skip_Target_Setup := false,
- Use_MacsBug_Log_Macro := true,
- MacsBug_Log_Macro := "ap;how;wh;ip;td;", (*stdlog*)
- _____________________ := "_________________________",
- Quit_All_First := true,
- Make_Aliases := false
- # Custom_Testing := false,
- )
-
- begin
- global gDevelopmentMode;
-
- trace( false );
-
- println; println;
- println 'LaunchQuit Engine 2.1.4';
- println 'Copyright ©Apple Computer, Inc. 1992-1997';
- println;
- # println '••••••SPECIAL FOREGROUND VS BACKGROUND RUN•••••••••••';
-
- if Print_Instructions
- begin
- printLQInstructions();
- exit;
- end;
-
- CommandExceptions(true);
-
- try
- match[target t:?tName];
- catch theError
- tName := undefined;
-
- if tName
- actorName(tName);
- else
- begin
- SysBeep();
- println; println; println; println; println;
- println (*You Idiot!*) "No target selected, or target crashed at run time.";
- exit;
- end;
-
- InitGlobals();
-
- CommandTimeOut(121); #SBR 08/27/94: No retries in VU 2.1. Set to 121 seconds (ADSP timeout + 1).
- ExternalToolTimeout(999); #SBR 08/27/94: External Tools TimeOut in VU 2.1; Set to 121 seconds.
- maxFailures(32766);
- mouseSpeed(50); #SBR 08/27/94: Went from 0 (instant) to 50 (smooth, fast speed).
-
- RPushVerbosity(Verbosity_Level);
-
- AddExceptionHandler(-1100, {TASK EH_CrashRecover, {'LaunchQuit Script.vu',1,5},0});
- AddExceptionHandler(-1104, {TASK EH_CrashRecover, {'LaunchQuit Script.vu',1,5},0});
- AddExceptionHandler(-1105, {TASK EH_CrashRecover, {'LaunchQuit Script.vu',1,5},0});
-
- println 'Run Name: ', Run_Title;
- println 'Target: ', tName;
-
- theTime := _Match([time]);
-
- println 'Date: ', theTime.m, '/', theTime.d, '/', theTime.y;
- theHour := theTime.h;
- if theHour >= 1200 and theHour < 2400
- theM := 'PM';
- else
- theM := 'AM';
- if theHour > 1259
- theHour := theHour - 1200;
- if theHour < 100
- theHour := theHour + 1200;
- theHour := "{theHour}";
- if card theHour < 4 # make it pretty
- theTime := theHour[1] + ':' + theHour[2] + theHour[3];
- else
- theTime := theHour[1] + theHour[2] + ':' + theHour[3] + theHour[4];
- println 'Time: ', theTime, ' ', theM;
- println;
-
- if Use_Development_TDs
- begin
- # added for Radar 1274933
- println "YOU ARE IN DEVELOPMENT MODE. ";
- println " Log_Target_Info := false";
- println " Skip_Target_Setup := true";
- println;
- gDevelopmentMode := true;
- Log_Target_Info := false;
- Skip_Target_Setup := true;
- end;
- else
- begin
- gDevelopmentMode := false;
- end;
-
- #( Print all parameters for ISO compliance, Radar 1274932
- if not gDevelopmentMode
- begin
- println "SCRIPT PARAMETERS ••••••••••••••••••••••••••••••••••••••••••••••";
- println "Print_Instructions: {Print_Instructions}";
- println "Run_Title: ∂"{Run_Title}∂"";
- println "Report_To_Phoenix: {Report_To_Phoenix}";
- println "Test_Type: {Test_Type}";
- println "Skip_These_Tests: {Skip_These_Tests}";
- println "Run_Only_These_Tests: {Run_Only_These_Tests}";
- println "Iterate_Each_Test: {Iterate_Each_Test}";
- println "Random_Order_Once_Each: {Random_Order_Once_Each}";
- println "Random_Seed: {Random_Seed}";
- println "Launch_Method: ∂"{Launch_Method}∂"";
- println "Special_Parameters: {Special_Parameters}";
- println "Resume_Last_Run: {Resume_Last_Run}";
- println "Resume_Offset: {Resume_Offset}";
- println "_______________________: {_______________________}";
- println "Configurations__0_Is_Custom: {Configurations__0_Is_Custom}";
- println "Iterate_Each_Configuration: {Iterate_Each_Configuration}";
- if Configurations__0_Is_Custom
- begin
- println "Disk_Cache: ∂"{Disk_Cache}∂"";
- println "Modern_Memory_Manager: ∂"{Modern_Memory_Manager}∂"";
- println "_32Bit_Addressing: ∂"{_32Bit_Addressing}∂"";
- println "Virtual_Memory: ∂"{Virtual_Memory}∂"";
- println "RAM_Disk: ∂"{RAM_Disk}∂"";
- println "Use_Defaults: ∂"{Use_Defaults}∂"";
- end;
- println "Printer_Selections: {Printer_Selections}";
- #println "Screen_Depth: {Screen_Depth}";
- #println "Gray_Scale: {Gray_Scale}";
- #println "_68040_Cache: {_68040_Cache}";
- println "______________________: {______________________}";
- println "Verbosity_Level: {Verbosity_Level}";
- println "Use_Development_TDs: {Use_Development_TDs}";
- println "Log_Target_Info: {Log_Target_Info}";
- println "Skip_Target_Setup: {Skip_Target_Setup}";
- println "Use_MacsBug_Log_Macro: {Use_MacsBug_Log_Macro}";
- println "MacsBug_Log_Macro: ∂"{MacsBug_Log_Macro}∂"";
- println "_____________________: {_____________________}";
- println "Quit_All_First: {Quit_All_First}";
- println "Make_Aliases: {Make_Aliases}";
- println "••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••";
- println;
- end;
- #) End printing all parameters
-
- if Log_Target_Info and not Resume_Last_Run # do not log target info for a resume
- info_v_level := 1;
- else
- info_v_level := 6;
-
- if Random_Seed
- begin
- randomSeed(Random_Seed);
- RStatus("RandomSeed was set to {randomSeed()} for reproducibility.",2);
- end;
-
- if not Skip_Target_Setup
- begin
- CheckExternalToolVersions();
- end;
-
- reset_target_info(info_v_level < 6, info_v_level); # Gets CPU info, prints it if desired
-
- if not Skip_Target_Setup
- begin
- if Quit_All_First
- begin
- quit_apps({},true); # quit all applications
- key_eq('w',5);
- end;
-
- if Printer_Selections
- begin
- if not SelectPrinter(Printer_Selections)
- begin
- RError("Could not select a printer!!? Exiting script",1);
- exit;
- end;
- end;
-
- if isMember(Launch_Method, {'VUAidFKEY'})
- begin
- SysBeep();
- RStatus("VUAidFKEY is an obsolete launch method");
- RStatus("Please choose a different launch method. Exiting LaunchQuit Script.vu...");
- exit;
- end;
-
- if Make_Aliases or not _MatchBoolean([menuItem t:/Memory≈/ m:1],true)
- alias_control_panel('Memory');
-
- MacsBugLog('delete');
- if Use_MacsBug_Log_Macro # stored macro is undefined if ignored (NOT cleared)
- SetMacsBugMacro(MacsBug_Log_Macro);
- end;
- else
- begin
- println;
- println "Skipping target setup - the following features are disabled:";
- println "Quit_All_First, Select_Printer, Make_Memory_Alias, ";
- println "Target_Control, SetMacsBugMacro and CheckExternalToolVersions.";
- println ;
- #println "Some test defs may not work properly because the target information ";
- #println "is incomplete. If you want a full run but do not want the script to change ";
- #println "the control panels, put an empty list, ∂{∂}, into Configurations__0_Is_Custom.";
- #println;
-
- Configurations__0_Is_Custom := {};
- end;
-
- engineParameters := {};
- if Use_Development_TDs # refer to "Dev LaunchQuits"
- begin
- engineParameters := engineParameters + {{ 'GetTestDefTask',task GetDevLaunchQuitTD }};
- println "You set the Use_Development_TDs script parameter to true, so the";
- println "LaunchQuit Engine will use the Development test defs.";
- println ;
- end;
- else # refer to "LaunchQuit Test Defs.vulib"
- engineParameters := engineParameters + {{ 'GetTestDefTask',task GetLaunchQuitTD }};
-
- if Use_Arbitrator_If_Available
- engineParameters := engineParameters + {'UsingArbitrator'};
-
- if Resume_Last_Run
- begin
- if Resume_Last_Run[card Resume_Last_Run] <> '@' # user specified a partial name
- Resume_Last_Run := /≈{Resume_Last_Run}≈/;
-
- engineParameters := engineParameters + {{ 'resumeThisTD',Resume_Last_Run }};
-
- # store the index of the resume item for later removal, part of fix for Radar 1119461
- resumeThisTDIndex := card engineParameters;
-
- engineParameters := engineParameters + {{ 'resumeTDOffset',Resume_Offset }};
- end;
- else
- engineParameters := engineParameters + {{ 'resume','Reset' }};
-
- Time_Formats := { 'TDCore' }; # see LaunchQuits.lib for choices
- if Time_Formats
- engineParameters := engineParameters + {{'timers', Time_Formats}};
-
- engineParameters := engineParameters + {{ 'Phoenix', Report_To_Phoenix }};
-
- engineParameters := engineParameters + {{ 'launchBy', Launch_Method }};
- engineParameters := engineParameters + {{ 'iterateTD', Iterate_Each_Test }};
-
- temp := isMember('exactSpellingRequired', Special_Parameters);
- if temp
- Special_Parameters := remove( temp, Special_Parameters );
- engineParameters := engineParameters + {{'specialParameters', Special_Parameters}};
-
- engineParameters := engineParameters + {{'randomDeal', Random_Order_Once_Each}};
- engineParameters := engineParameters + {{'doCustomTask', Custom_Testing}};
-
- temp := isMember('testNameHerePartialNameOK', Run_Only_These_Tests);
- if temp
- Run_Only_These_Tests := remove( temp, Run_Only_These_Tests );
-
- temp := isMember('testNameHerePartialNameOK', Skip_These_Tests);
- if temp
- Skip_These_Tests := remove( temp, Skip_These_Tests );
-
- if not Configurations__0_Is_Custom
- begin
- for thisIteration := 1 to Iterate_Each_Configuration
- begin
- # if Iterate_Each_Configuration > 1
- # begin
- # if (thisIteration mod 2) = 1
- # begin
- # launch ('VUsr', false, true);
- # RStatus("BEGIN LAUNCHQUIT ENGINE ITERATION #{thisIteration} IN FOREGROUND");
- # end;
- # else
- # begin
- # launch ('MPS ', false, true);
- # RStatus("BEGIN LAUNCHQUIT ENGINE ITERATION #{thisIteration} IN BACKGROUND");
- # end;
- # end;
- if Iterate_Each_Configuration > 1
- RStatus("BEGIN LAUNCHQUIT ENGINE ITERATION #{thisIteration} FOR MANUAL MODE");
- CheckLaunchQuit( Test_Type, Run_Only_These_Tests, Skip_These_Tests, engineParameters);
- if Resume_Last_Run #remove resume parameters after 1st pass, fixes Radar 1119461
- begin
- engineParameters := remove(resumeThisTDIndex + 1,engineParameters); #highest first
- engineParameters := remove(resumeThisTDIndex,engineParameters);
- end;
- end;
- end;
- else for each theMode in Configurations__0_Is_Custom
- begin
- for thisIteration := 1 to Iterate_Each_Configuration
- begin
- if Iterate_Each_Configuration > 1
- begin
- if Iterate_Each_Configuration > 1
- RStatus("BEGIN LAUNCHQUIT ENGINE ITERATION #{thisIteration} FOR MODE {theMode}");
-
- # if (thisIteration mod 2) = 1
- # begin
- # launch ('VUsr', false, true);
- # RStatus("BEGIN LAUNCHQUIT ENGINE ITERATION #{thisIteration} IN FOREGROUND MODE {theMode}");
- # end;
- # else
- # begin
- # launch ('MPS ', false, true);
- # RStatus("BEGIN LAUNCHQUIT ENGINE ITERATION #{thisIteration} IN BACKGROUND MODE {theMode}");
- # end;
- end;
- if theMode
- target_control(theMode,,info_v_level);
- else
- target_control
- ( 0,
- {
- { 'dc',Disk_Cache},
- { 'mm',Modern_Memory_Manager},
- { 'vm',Virtual_Memory},
- { '32',_32Bit_Addressing},
- { 'rd',RAM_Disk},
- { 'ud',Use_Defaults},
- 'quick'
- #{ 'bd',Screen_Depth},
- #{ 'gs',Gray_Scale},
- #{ '40',_68040_Cache}
- },
- info_v_level
- );
-
- # 02/19/94 SBR: Moved VUAid availability check to beginning of script.
-
- CheckLaunchQuit( Test_Type, Run_Only_These_Tests, Skip_These_Tests, engineParameters);
- if Resume_Last_Run #remove resume parameters after 1st pass, fixes Radar 1119461
- begin
- engineParameters := remove(resumeThisTDIndex + 1,engineParameters); #highest first
- engineParameters := remove(resumeThisTDIndex,engineParameters);
- end;
- end;
- end;
-
- RemoveExceptionHandler(-1105);
- RemoveExceptionHandler(-1104);
- RemoveExceptionHandler(-1100);
- sysBeep();
- end;
-
-
- #########################################################################
- # task PrintLQInstructions()
- #∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞
- # Description: Prints the instructions for the script parameters for the
- # LaunchQuit engine.
- # Parameters: none
- # Returns: nothing
- # Examples: PrintLQInstructions();
- # Assumptions: None
- #∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞
- # History:
- # 09/07/94 SBR Created
- # 08/03/95 SBR Added Printer_Selections instructions
- # 01/10/97 SBR Updated for LQ Engine 2.1.1
- # 04/10/97 SBR Updated for LQ Engine 2.1.4
- #########################################################################
- task PrintLQInstructions()
- begin
- println "INSTRUCTIONS FOR THE LAUNCHQUIT ENGINE 2.1.4";
- println "Copyright © Apple Computer, Inc. 1994-1997";
- println "";
- println "These are instructions on how to use the LaunchQuit engine script parameters.";
- println "Press command-period any time to stop. To prevent printing the instructions,";
- println "set the Print_Instructions script parameter to false.";
- println "";
- println "";
- println " Print_Instructions";
- println " Possible values are:";
- println " true: Print the instructions for how to use the script parameters, ";
- println " then exit the script.";
- println " false: Execute the script normally. Do not print instructions.";
- println "";
- println " Run_Title";
- println " This is just a string the engine puts into the notebook as an ";
- println " identifier for someone reading the log later. It can be anything ";
- println " you want. For example, you might use ";
- println " 'Quadra 840AV GMc4 Acceptance Launchquits with EtherNet'.";
- println "";
- println " Report_To_Phoenix";
- println " This is a Boolean to switch on and off TCS reporting to Phoenix from ";
- println " the LaunchQuit Engine. For a description of TCS reporting, refer to ";
- println " the HitchHiker's Guide to SPEC S&L.";
- println " true: report test def results to a Phoenix database";
- println " through the Results Express external tool";
- println " false: do not report test def results externally";
- println "";
- println "TEST DEF SELECTION";
- println "This section allows you to specify which test defs you want to execute and how to ";
- println "execute them. It partains to the method of launching, a switch for randomness, and how";
- println "to resume from stopping in the middle of the script.";
- println "";
- println " Test_Type";
- println " The type of test you want to run, similar to the tier for ";
- println " application compatibility testing. Test defs can be divided into ";
- println " types 1, 2, and 3, with type 1 being the kind you want to run every ";
- println " time, and 3 the kind you want to run least often. Currently, all ";
- println " Launchquits are type 1.";
- println "";
- println " Skip_These_Tests";
- println " A list of test defs never to use under any circumstances. Include ";
- println " the string or regular expression name(s) of the application(s) you ";
- println " want to skip for this run of the engine. They will be logged as ";
- println " Incomplete tests in the Notebook. The name can be partial, but only ";
- println " the first occurrance counts. The items are removed from the list as ";
- println " they are skipped. If the name does not end in '@' then it is assumed ";
- println " to be a partial name and a trailing '≈' is added. For example: ";
- println " ∂{ ∂/≈PageMaker≈∂/, 'Adobe Premiere' ∂} will skip these two and run all ";
- println " others. This parameter overides all others.";
- println "";
- println " Run_Only_These_Tests";
- println " A list of test defs to test, if you want to use a subset. Include ";
- println " the string or regular expression name(s) of the application(s) you ";
- println " want to test during this run of the engine. If there are any items in ";
- println " this list the engine will use ONLY the listed test defs. The other ";
- println " applications are ignored and not logged. This is most useful for ";
- println " iterating a specific test def for regression. The name can be ";
- println " partial, but only the first occurance will be executed. The items are ";
- println " removed from the list as they are used. If the name does not end in ";
- println " '@' then it is assumed to be a partial name and a trailing '≈' is ";
- println " added. For example: ∂{ ∂/≈PageMaker≈∂/, 'Adobe Premiere' ∂} will run ";
- println " ONLY these two.";
- println "";
- println " NOTE: If the same name is in Skip_These_Tests and Run_Only_These_Tests, ";
- println " then the request to skip takes priority over the request to run.";
- println "";
- println " Iterate_Each_Test";
- println " An integer specifying how many times to iterate each test def ";
- println " which is not skipped. This parameter is useful for stress testing.";
- println "";
- println " Random_Order_Once_Each";
- println " Changes the order of execution. The engine will execute all test ";
- println " defs in pseudo-random order, but none will execute more than once, ";
- println " unless Iterate_Each_Test is greater than one. Possible values are:";
- println " true: Test defs execute in pseudo-random order.";
- println " false: Test defs execute in natural order, which is alphabetic.";
- println "";
- println " Random_Seed";
- println " Used when trying to reproduce pseudo-random tests. Before using VU's";
- println " random number generator, the script prints the random seed in the ";
- println " Notebook. If you want to reproduce a test run then copy the seed from ";
- println " the Notebook and paste it in this parameter. Possible values are:";
- println " zero: Allow VU create a new random seed.";
- println " integer: Set the random seed to the specified value.";
- println "";
- println " Launch_Method";
- println " This allows you to specify how you want to launch the application. ";
- println " The most reliable method is 'Finder'. The fastest is 'auto'.";
- println " The possible values are:";
- println " 'AgentVUFG': Launch by creator into the foreground using Agent VU.";
- println " CAUTION: Agent VU 2.0, 2.0.1, and 2.1 will not launch an app if the ";
- println " preferred size is not available. Since Agent VU uses ";
- println " the creator, that should be unique across all ";
- println " mounted target volumes.";
- println " 'AgentVUBG': Launch by creator into the background using Agent VU. ";
- println " Since most applications do not launch properly into ";
- println " the background, this method is not allowed unless ";
- println " launchParams contains 'bgLaunchOK'.";
- println " 'Finder': Twitch to Finder and Find appName. Type command-O ";
- println " while pressing the option key to close the containing window.";
- println " This method is slow but sure if the names are unique.";
- println " 'Find File': Launch the Find File DA and find appName. Uses option-";
- println " doubleClick to quit Find File before launching the app.";
- println " This method is sure if the names are unique.";
- println " 'auto': Use 'agentVUFG', but if this is fails use 'Find File'.";
- println " 'VUAid2FG': Launch by appName into foreground using VUAid External tool.";
- println " 'VUAid2BG': Launch by appName into background using VUAid External tool.";
- println "";
- println " Special_Parameters";
- println " Launch only the applications with the specified launch parameters. ";
- println " This is mainly used to test under known failure conditions. ";
- println " Possible values are:";
- println " 'FPU': The application expects the target to have an FPU.";
- println " '32Bit': The application crashes under 32-bit addressing.";
- println " '68040 Caches': The application crashes if 68040 Caches are on.";
- println " 'QuickTime': The application expects the target to have QuickTime.";
- println " 'noCreatorLaunch': There are multiple applications across the ";
- println " target volumes which have this creator. ";
- println " 'bgLaunchOK': The application can launch into the background.";
- println " Most apps are not made to launch into the backgound so you ";
- println " need to qualify each one thouroughly before allowing it.";
- println " 'SNConflict': The application uses network-based serial number ";
- println " copy protection. ";
- println " 'PPC': The application runs only on a PowerPC (not 68K).";
- println " '68K': The application runs only on a real 68K processor (very rare).";
- println " 'MMM': The application does not launch with Modern Memory Manager on.";
- println " 'EBBE': The application crashes with EvenBetterBusError,a system ";
- println " extension to help catch renegade references to NIL.";
- # println " 'MaxT0': For Maxwell tier 0 app. Yet to be implemented.";
- println " ∂{'bitDepth',∂{restrictedBitDepths∂}∂}∂: The application will run only";
- println " if the target bitdepth is contained in the list of ";
- println " restricted bitdepths. For example, ∂{'bitDepth',∂{8,16,32∂}∂}.";
- println "";
- println " Resume_Last_Run";
- println " If for some reason you stop the Launchquit script prematurely, ";
- println " you can resume at any application by putting its name in this ";
- println " parameter. You can use a partial or exact name. The best way is to ";
- println " copy the exact name of the last attempted test def from the ";
- println " Notebook. NOTE: If you are using Run_Only_These_Tests, the string ";
- println " in this parameter must exactly equal the string in Run_Only_These_Tests.";
- println "";
- println " Resume_Offset";
- println " Using this if you want to resume at some test def after the one";
- println " specified in Resume_Last_Run. Include an integer representing the";
- println " offset from the original. The engine will find the nth test def that";
- println " matches Special_Parameters. For example, the last test def executed";
- println " before you stopped the engine might be 'SimAnt'. Usually, if SimAnt ";
- println " failed, you will want to resume at the next one, so put 'SimAnt' ";
- println " in Resume_Last_Run and 1 into the Resume_Offset. If you want to ";
- println " resume with 'SimAnt', use a zero here. You can not use negative ";
- println " offsets, but the number may be as high as the number of test defs";
- println " matching Special_Parameters.";
- println "";
- println "TARGET SETUP";
- println "This section allows you to specify how to set up the Memory Control Panel, and how many times ";
- println "you want to run through all the test defs in each configuration. To use this feature, the ";
- println "VUAid 2.1 External Tool must be on the Target.";
- println "";
- println " Configurations__0_Is_Custom";
- println " For each integer in this list, the engine will set up the ";
- println " target according to the values described below, restart the target, ";
- println " then run all test defs as specified above. If you want to set up the ";
- println " Memory Control Panel manually for one pass, leave the list empty. ";
- println " All possible values are defined in TargetControl.lib. The most";
- println " commonly used values are:";
- println "";
- println " 0: Use the custom Memory CP parameters as specified below.";
- println " Otherwise, those parameters are ignored.";
- println " 1: VM on, 2x physical RAM if possible, 32-bit on.";
- println " 2: VM off, 32-bit on.";
- println " 3: VM on, 2x physical RAM if possible, 32-bit off.";
- println " 4: VM off, 32-bit off.";
- println " 5: Use random settings for all Memory CP sections.";
- println "";
- println " Iterate_Each_Configuration";
- println " Use this integer to iterate configurations, with a restart in ";
- println " between each one. You can several of the same values in the ";
- println " Configurations__0_Is_Custom parameter also, but this allows for ";
- println " larger numbers of repetitions. ";
- println "";
- println " Disk_Cache";
- println " Custom value for the Disk Cache section of the Memory Control ";
- println " Panel. Possible values are:";
- println " 'xK': (x > 0) the value in KB";
- println " 'random': choose randomly from all possible values";
- println " 'no change': recover from Use Defaults (not implemented)";
- println " '': empty string to ignore this section";
- println "";
- println " Modern_Memory_Manager";
- println " Custom value for the Modern Memory Manager section of the ";
- println " Memory Control Panel. Possible values are:";
- println " 'on': click On if not already selected";
- println " 'off': click Off if not already selected";
- println " 'random': click On or Off randomly";
- println " 'no change': recover from Use Defaults (not implemented)";
- println " '': empty string to ignore this section";
- println "";
- println " _32Bit_Addressing";
- println " Custom value for the 32-Bit Addressing section of the ";
- println " Memory Control Panel. Possible values are:";
- println " 'on': click On if not already selected ";
- println " 'off': click Off if not already selected";
- println " 'random': click On or Off randomly";
- println " 'no change': recover from Use Defaults (not implemented)";
- println " '': empty string to ignore this section";
- println "";
- println " Virtual_Memory";
- println " Custom value for the Virtual Memory section of the ";
- println " Memory Control Panel. Possible values are:";
- println " 'on': click On if not already selected";
- println " 'xM': (x > 0) click On, set the value to xM";
- println " 'x%': (0 <= x <= 100) click On, set to x% of maximum";
- println " 'off': click Off if not already selected";
- println " 'min': set to minimum (available built-in memory + 1M)";
- println " 'max': set to maximum (available on disk - 1M)";
- println " 'auto': turn VM off then on after setting the other ";
- println " sections, and let Memory CP choose the value";
- println " 'random': choose randomly from minimum to maximum";
- println " 'no change': recover from Use Defaults (not implemented)";
- println " '': empty string to ignore this section";
- println "";
- println " RAM_Disk";
- println " Custom value for the RAM Disk section of the Memory Control Panel. ";
- println " The RAM Disk must be empty to change its settings.";
- println " Possible values are:";
- println " 'xK': (0 <= x) size in KB (click On or Off as needed)";
- println " 'x%': (0 <= x <= 100) set to % of slider positions ";
- println " (faster, less accurate)";
- println " 'x%!': (0 <= x <= 100) set to % of max - min ";
- println " (slower, more accurate)";
- println " 'off': click Off";
- println " 'min': set to minimum size";
- println " 'max': set to maximum size";
- println " 'random': choose randomly from all slider positions";
- println " (1/125 chance of turning it off)";
- println " 'VMOn': set size just high enough to allow use of VM ";
- println " (not implemented)";
- println " 'no change': recover from Use Defaults (not implemented)";
- println " '': empty string to ignore this section";
- println "";
- println " Use_Defaults";
- println " Custom value for the Use Defaults section of the Memory Control ";
- println " Panel. Possible values are:";
- println " 'click': click Use Defaults before setting other sections";
- println " '': ignore this section";
- println " Printer_Selections ";
- println " Currently all test defs assume there is a valid type of printer ";
- println " selected. This list contains the default types. A printer selection is ";
- println " a list containing two items: ";
- println " ∂{ printerType,∂{ setupParameters ∂} ∂} ";
- println " The format of these items is defined in the file TargetControl.lib, in the ";
- println " task SelectPrinter(). ";
- println "";
- println "MISCELLANEOUS";
- println "This section contains miscellaneous script settings which are most useful when developing ";
- println "and debugging test defs. Some of them eliminate much of the time taken to set up the target, ";
- println "and allow you to skip all the fluff and jump directly to the engine itself.";
- println "";
- println " Verbosity_Level";
- println " This is an integer specifying how much diagnostic information ";
- println " you want to print in the Notebook. Possible values are:";
- println " 0: no output except for Not-Tested-List";
- println " 1: only Begin/End tests, Errors, Not-Tested-List and summaries";
- println " 2: run-time output, without specifying multiple verifications";
- println " 3: run-time output, with multiple verifications";
- println " 4: scripter's debugging-level output";
- println " 5: Clouseau-libs level debugging-output";
- println " This script normally executes at verbosity level 2. The engine ";
- println " will use level 3 for the output of any failed test def, to provide";
- println " regression information.";
- println "";
- println " Use_Development_TDs";
- println " A Boolean value that is normally false. If it is true, the engine";
- println " will execute the test defs contained in the Dev Launchquits ";
- println " library, which allows you to create and use new test defs";
- println " without modifying the production libraries. Values are:";
- println " true: Use the development test defs in 'Dev Launchquits'";
- println " false: Use the standard test defs in 'LaunchQuit Test Defs.vulib'";
- println "";
- println " Log_Target_Info";
- println " A Boolean value that determines whether you want the script to ";
- println " print the current target information first, before configuring";
- println " the target and calling the engine. Possible values are:";
- println " true: The engine will log the state of the target before ";
- println " as well as after changing the configuration. This is ";
- println " slower but more thorough. ";
- println " false: The engine will log the state of the target only after ";
- println " changing the configuration. This is faster.";
- println "";
- println " Skip_Target_Setup";
- println " A Boolean value that determines whether to configure the target";
- println " according to the Configurations__0_Is_Custom parameter. Possible";
- println " values are:";
- println " true: The script will skip the target setup and go directly ";
- println " to running the test defs. This is desirable if you ";
- println " are developing new test defs. The script prints a ";
- println " list of what was not set up in the Notebook.";
- println " false: The engine will set up the target according to the ";
- println " parameters above. This is the usual setting, but you";
- println " can also use it for development if you want to try";
- println " the new test defs under various configurations.";
- println "";
- println " Use_MacsBug_Log_Macro";
- println " This Boolean parameter determines whether you want to set the ";
- println " MacsBug EveryTime macro. This macro executes automatically ";
- println " whenever the target enters MacsBug. See the MacsBug manual for";
- println " details. Possible values for this parameter are:";
- println " true: The script creates a MacsBug EveryTime macro as ";
- println " defined in the MacsBug_Log_Macro parameter below. ";
- println " After every test def and every crash, the engine ";
- println " checks for a MacsBug log, and if found, renames it";
- println " and moves it to a folder on the target startup disk.";
- println " If you want to ensure there is no EveryTime macro, set ";
- println " this parameter to true and set the MacsBug_Log_Macro";
- println " parameter to 'clear'.";
- println " false: The script will completely ignore the EveryTime macro.";
- println " If it is defined in the Debugger Prefs file in the ";
- println " target system folder, it will execute from there.";
- println "";
- println " MacsBug_Log_Macro";
- println " If you put a string in this parameter consisting of valid MacsBug";
- println " commands followed by semi-colons, and the Use_MacsBug_Log_Macro ";
- println " parameter is set to true, the script will set up the EveryTime ";
- println " Macro to create a log, execute the commands you put here, close ";
- println " the log and restart. If you want to define the macro in the ";
- println " Debugger Prefs file, put a false value in Use_MacsBug_Log_Macro.";
- println " To ensure the EveryTime macro is cleared under all circumstances,";
- println " put true into Use_MacsBug_Log_Macro and put 'clear' in this";
- println " parameter. Then crashed targets will sit right where ";
- println " they crashed. This is good for manual debugging. Possible values";
- println " for this parameter are:";
- println " theMacro: A string of valid MacsBug commands, each followed ";
- println " by a semi-colon. For example, the string ";
- println " 'ap;how;wh;ip;td;' will put the application name,";
- println " how it crashed, where it crashed, some disassembly";
- println " around the crash point, and the registers, into the";
- println " log. The commands you specify here are wrapped in ";
- println " commands to open a log, close it and restart, so ";
- println " you do not have worry about that if you use this ";
- println " mechanism to make the macro. ";
- println " ";
- println " If you put an empty string here, the engine will ";
- println " still create a log and restart, but it will be an";
- println " empty file.";
- println " ";
- println " CAUTION: Keep it short, MacsBug is unforgiving ";
- println " for long macros. Also, beware of commands that";
- println " produce so many output lines that MacsBug asks for";
- println " a key press to continue auto-scrolling. Stack";
- println " crawls based on A7 tend to produce too much.";
- println " 'clear': This is a special value to clear the EveryTime ";
- println " macro. Even if the macro is defined in the Debugger";
- println " Prefs file, it will be cleared.";
- println "";
- println " Quit_All_First";
- println " You may want to run the LaunchQuit engine with an application ";
- println " running in the background, or perhaps several. Normally, the";
- println " script tries to quit all applications except Finder before ";
- println " calling the engine. This Boolean parameter allows you to skip";
- println " that process. Possible values are:";
- println " true: The script will try to quit all applications before ";
- println " starting the engine. This is slower but ensures there ";
- println " are no leftover applications taking up space. ";
- println " false: The script will ignore whatever applications were ";
- println " running at the time it started. ";
- println " ";
- println " CAUTION: These applications will stay in the background ";
- println " for the whole run, but in the current implementation ";
- println " they are not re-launched after a crash.";
- println "";
- println " Make_Aliases";
- println " When the script configures the target with several Control Panels, ";
- println " you can speed up the process by allowing it to create aliases ";
- println " and move them to the Apple Menu Items folder. When the script";
- println " tries to open a Control Panel it looks first for the alias.";
- println " Possible values are:";
- println " true: The script will create an alias for all Control Panels ";
- println " used during the run, and put the alias in the Apple ";
- println " Menu Items folder.";
- println " ";
- println " CAUTION: In the current implementation the aliases";
- println " are not removed after the run is complete.";
- println " false: The script will not create an alias for Control Panels. ";
- println "";
- println " Custom_Testing";
- println " (Not implemeted well enough for production use).";
- println " This Boolean value specifies if you want to execute the custom";
- println " task defined in the LQCustom.lib. You can define this task";
- println " any way you want. When the launch sequence is complete for ";
- println " each application, the engine executes the custom task. ";
- println " After the custom task returns successfully, the engine attempts ";
- println " to quit the application normally. Possible values are:";
- println " true: The engine will execute the custom task.";
- println " false: The engine will not execute the custom task. ";
- println "";
- # println " Use_Arbitrator_If_Available";
- # println " If the Arbitrator script is running, connect to it and";
- # println " use it to keep track of which test def is currently ";
- # println " executing, and also to prevent multiple launching of";
- # println " applications that check for serial number conflicts";
- # println " over the network. Possible values are:";
- # println " true: Connect to the Arbitrator if it is running.";
- # println " false: Do not connect to the Arbitrator. ";
- end;
-
- ################################################################################
- #################### End of Calls ####################
- ################################################################################